import cors from 'cors';

/**
 * 跨域配置中间件
 * @returns {Function} cors中间件
 */
const corsMiddleware = () => {
    // 允许的域名列表
    const allowedOrigins = [
        'http://localhost:8080',
        'http://127.0.0.1:8080',
        // 添加其他需要允许的域名
    ];

    // 生产环境配置（可根据环境变量动态切换）
    const isProduction = process.env.NODE_ENV === 'production';
    const productionOrigin = isProduction ? ['https://your-production-domain.com'] : [];

    // 完整配置
    const options = {
        origin: (origin, callback) => {
            // 允许无origin的请求（如postman、curl等）
            if (!origin) return callback(null, true);

            // 合并开发和生产环境的域名白名单
            const validOrigins = [...allowedOrigins, ...productionOrigin];

            if (validOrigins.includes(origin)) {
                callback(null, true);
            } else {
                callback(new Error(`Origin ${origin} not allowed by CORS`));
            }
        },
        methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
        allowedHeaders: [
            'Content-Type',
            'Authorization',
            'X-Requested-With',
            'Accept'
        ],
        exposedHeaders: ['Authorization'],
        credentials: true,
        maxAge: 86400, // 预检请求缓存时间（秒）
        optionsSuccessStatus: 200
    };

    return cors(options);
};

export default corsMiddleware;